iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

JavaScript核心篇系列 第 7

【JavaScript 核心】陳述式與表達式

  • 分享至 

  • xImage
  •  

陳述式與表達式

陳述式 ( Statement )
用於命令執行指定的一系列操作,不會回傳結果

表達式 ( Expression )
又可稱為表示式、運算式,經常透過一些符號結合上下語句並運算及回傳結果

陳述式或表達式並不一定是個完整的語句,片段也可成為陳述式或表達式

範例 :

//表達式
100 + 100; // 回傳一個值 200

//陳述式
var ming; // undefined

if (1 === 1){
} // undefined

//表達式
ming = '小明'; // 回傳 "小明"

函式陳述式 與 函式表達式,兩者的 hoisting 結果會不一樣

前面這篇介紹 函式提升 有提到

// 函式陳述式、具名函式
function callName(){

}

// 函式表達式、匿名函式
// 宣告一個變數,並且用等號將函式賦值到變數上
var callName = funciton(){

}

ASI 自動插入分號

ASI:當JavaScript語句沒有加上分號時,則會受到自動插入分號(ASI)規則影響。

來看看下面這個兩種範例的差別

function callName() {
  return
  '叫我小明';
}
console.log(callName());
// undefined

// 以下是實際運行方式
function callName() {
  return ; // ASI機制會自動插入分號,因此結果是 undefined
  '叫我小明';
}
console.log(callName());
// undefined

//---------------------------
// 可以正確回傳小明的方式
function callName() {
  return '叫我小明';
}
console.log(callName());
// 叫我小明

以下「不會」發生ASI規則:

1.新的一行是「 ([/ 」開始 (容易出錯的地方)
2.新的一行以「+-*%」作開始 (會影響執行結果)
3.新的一行以「 ,.」作開始 (須注意執行結果)

遇到以上的標點符號前方加入分號也是解決辦法


上一篇
【JavaScript 核心】記憶體 & 同步、非同步
下一篇
【JavaScript 核心】動態型別
系列文
JavaScript核心篇19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言